// pages/personInfo/personInfo.js
import WxValidate from '../../utils/WxValidate'
import utils from "../../utils/util"
var app=getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo:null
  },
  //注销登录 
  quit(){ 
    wx.removeStorageSync('userInfo'); 
    app.globalData.userInfo = null; 
    wx.switchTab({ 
      url: '../person/person', 
    }).then(res=>{ 
      utils.pageOnLoad() 
    }) 
  },
  selectAddress() { 
    wx.navigateTo({ 
      url: '../addres/addres', 
    }) 
  },
  //上传头像
  updateAvatar(){
//调用wx.chooseMedia API打开图片选择窗口 
wx.chooseMedia({ 
  count:1, 
  mediaType:['image'], 
  sourceType:['album','camera'], 
  sizeType:['original','compressed'], 
  success:(res)=>{
   
    wx.showLoading({ 
      title: '上传中' 
    })
    wx.uploadFile({ 
      filePath: res.tempFiles[0].tempFilePath,
      name: 'img',
      url: `${app.globalData.server}/uploadImg`, 
      success:(result)=>{//成功回调
        console.log(result) 
        let filePath = JSON.parse(result.data).path; 
        filePath = filePath.replace(/\\/g,'/'); 
        let userInfo = this.data.userInfo; 
        userInfo.avatarUrl = `${app.globalData.server}/${filePath}`; 
        this.setData({ 
          userInfo:userInfo
        })
        wx.hideLoading({}) 
        wx.showToast({ 
          title: '上传成功', 
          icon:"success" 
        }) 
      },
      fail:(e)=>{ 
        //失败回调 
        console.log(e) 
        wx.hideLoading({})
        wx.showToast({ 
          title: '上传失败', 
          icon:"error" 
        }) 
      } 
    }) 
  },fail:error=>{ 
    //chooseMedia失败回调 
    console.log(error) 
    wx.showToast({ 
      title: '上传失败', 
      icon:"error" 
    }) 
  } 
})
  },
  //昵称、手机号,输入框防抖 
  timeID: 0,//定时器ID 
  handleInput(e) { 
    const { name } = e.currentTarget.dataset//获取绑定的data-name属性值 
    const { value } = e.detail//获取输入的值 
    clearTimeout(this.timeID);//清楚timeID对应的定时器，取消相应函数的执行 
    this.timeID = setTimeout(() => { 
      if (name == 'nickName') { 
        this.setData({ 
          "userInfo.nickName": value 
        }) 
      } else { 
        this.setData({ 
          "userInfo.phone": value 
        }) 
      } 
    }, 1000) 
  },
  //保存表单 
  submitForm() { 
    //params保存需要验证的数据对象 
    const params = this.data.userInfo 
    //表单验证 
    if (!this.WxValidate.checkForm(params)) { 
      const error = this.WxValidate.errorList[0]; 
      this.showValidateModal(error); 
      return false; 
    }
    //表单验证完毕，接下来向后端发送数据
//加载中 
wx.showLoading() 
//向服务端发送请求 
wx.request({ 
  url: `${app.globalData.server}/wxUpdateUserInfo`, 
  method: 'POST', 
  data: { 
    openid: params.openid, 
    avatarUrl: params.avatarUrl, 
    nickName: params.nickName, 
    phone: params.phone 
    //params
  },
  success: res => { 
    wx.hideLoading() 
    //console.log(res) 
    if (res.data.status === 'success') { 
      //写入缓存 
      wx.setStorageSync('userInfo', params) 
      //更新全局变量 
      app.globalData.userInfo = params
      //提示 
      wx.showToast({ 
        title: '修改成功', 
        icon: 'success' 
      })
      //跳转至个人中心页面 
      setTimeout(() => { 
        wx.switchTab({ 
          url: '../person/person', 
        }) 
      }, 1000) 
    } else { 
      //提示 
      wx.showToast({ 
        title: '修改失败', 
        icon: 'error' 
      }) 
    } 
  }, fail: err => { 
    wx.hideLoading() 
    console.log(err) 
    //提示 
    wx.showToast({ 
      title: '修改失败', 
      icon: 'error' 
    }) 
  } 
})
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const userInfo = wx.getStorageSync('userInfo')
    this.setData({
      userInfo
    })
    //加载表单验证规则 
    this.initValidate();
  },
  //初始化验证规则 
  initValidate() { 
    // 验证字段的规则 
    const rules = { 
      nickName: { 
        required: true, 
        maxlength: 10 
      },
      phone: { 
        required: true, 
        tel: true 
      } 
    }
    // 验证字段的提示信息，若不传则调用默认的信息 
    const messages = { 
      nickName: { 
        required: '请输入昵称', 
        maxlength: '昵称不能超过10个字符' 
      },
      phone: { 
        required: '请输入手机号', 
        tel: '请输入正确的手机号码' 
      } 
    }
    // 创建实例对象 
    this.WxValidate = new WxValidate(rules, messages) 
  },
  //表单验证错误提示 
  showValidateModal(error) { 
    wx.showModal({ 
      content: error.msg, 
      showCancel: false, 
    }) 
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})